隨著時間的流逝,鐵人賽也來到尾聲,在經歷過安裝、架構教學、匯入模型、打開世界、寫入執行檔後,我們終於對控制 Gazebo 當中的機器人有了基本的認知。而今天我們要介紹的是有關 Rviz 的應用,以筆者所研究的隧道模型為例,把機器人所能得到的各種資訊如點雲、路徑、座標等等透過 Rviz 來去呈現出來,那麼我們就接著往下看吧!
在先前我們的Xml的介紹與運用中曾經提到過的 Rviz 的功能敘述,那麼今天則要來介紹如何實際操作系統介面。首先我們打開模擬世界還有機器人:
這是筆者團隊在研究模擬時所建的 world,其實就只是在原本 empty_world.launch
中導入隧道模型。針對模型導入的部分在之前都有提到,這邊就不再贅述。
接著在另一個 Terminal 上運行我們在第27天所介紹的程式碼,執行後如下:
還記得我們在 .xacro 檔的第二篇介紹當中提到,筆者加入了一個名為 openni 的深度相機模組到原本的模型上嗎?我們這次就要藉由他的 topic 內容來顯示在 Rviz 上。
因為這項功能另有 Package 所以還要再打開一個 Terminal 運行他的 launch:
接著用指令 rosrun rviz rviz
打開我們的 Rviz 介面
接著我們打開 Rviz 旁邊的列表,點選左下的 add :
裡面有著 Rviz 的預設顯示模組,具體內容在官網裡面有介紹,但筆者這裡還是會稍微說一下對這些顯示工具的想法,還有分別對應的 Message 類型,來幫助大家熟悉 Rviz 這個系統,筆者將其製作成表格方便閱讀。
以上是筆者對於原本的 add 選單內容的理解。大家可以搭配官網的顯示圖片以及示範影片來做學習,也許就能解決原本不易理解的部分。
接下來就實際操作一次打開顯示圖案的過程吧!
首先這裡我們先選擇 pointcloud2
:
至於為什麼不選擇 pointcloud
呢?的確,他在 Rviz 自己的介紹裡是一樣的,但筆者的點雲資訊是新修訂的,所以使用新的顯示資訊會來的比較穩定。
接著還記得當初提醒過不能亂取的 TopicName 嗎?我們那時把點雲資訊取名為 /camera/depth/point
,在這邊就必須將點雲資訊的 topic 名稱 /camera/depth/points
選取出來,就能夠得到以下的結果:
從靠近網格的部分可以看得出我們掃描的範圍是呈現一個扇形以及周圍隧道的輪廓,如想修改掃描範圍參數,可以去放置雷射功能的機器人所對應的 gazebo.xacro 中做設定
再來我們回到 add 選單,把 pointcloud2
換成 camera
,然後一樣選取當初命名的 topic:
上面顯示的是我們深度相機的結果,可以看到隧道的形狀,如果想用色彩來區隔遠近,那麼一樣在 camera 的標籤裡去做修改就好了,這裡筆者就不多贅述。
如果是忘記自己的 Topic 命名為何,可以打開 yourmodel.gazebo.xacro
檔來查看,這邊給大家看看筆者外掛軟鍵的內容:
需要注意的是 <framename>
,因為在 Rviz 裡是藉由你的 frame 名稱來讀取並且顯現對應資料
筆者這裡將他跟 reference 設為相同的方便管理
那大家可以再回到一開始打開 Rviz 的介面,可以看到右邊列表中 global options 下面有 fixed frame:
在 .gazebo.xacro 檔裡我們將 camera 的資訊放在命名為 camera_rgb_frame
的 reference 裡,代表說如果要顯示相機所提供的資訊,就要將 fixed frame 設為我們的 camera_rgb_frame
,否則會出現找不到 frame 的狀況。下面再跟各位介紹一些 frame 的定義:
這邊再個別解釋一下 map 與 odometry:
map:指的是虛擬世界的座標系統,z軸指向上方,但會因為機器人執行雷射掃描而不穩。
odom:機器人運動軌跡座標,在這個座標系統可以顯示位移、移動軌跡等動態資訊。
以上就是我們透過 Rviz 對於機器人相關掃描成果的介紹。
今天我們利用 Rviz 的圖形顯示功能來呈現出我們要的相關資料,雖然 Rviz 功能遠遠不只有我們今天提到的部分,但經過今天簡單的操作講解後,相信各位對於 Rviz 當中的介面與應用有了最基本的認識。如何選擇對的 frame 去呈現我們機器人所能提供的資訊,還有一些常用的 frame 的介紹就是今日的重點,當初筆者一開始在操作時頻頻出現錯誤,而且就連錯在哪都不知道,但原來只要選擇正確的 frame 以及 topic 名稱,那麼實際上操作起來也不至於太過複雜。今天的內容就到這邊結束了,同時也是這篇鐵人賽最後的教學,筆者團隊相當感謝大家的陪伴,你們的閱讀是筆者團隊撰寫文章的動力來源,同時在這邊也對所有完成鐵人賽的前輩感到由衷的敬佩,感謝各位!